package com.ideal.service;

import com.ideal.dto.config.req.ConfigDetailReqDto;
import com.ideal.dto.config.req.FileConfigDto;
import com.ideal.dto.config.req.FileConfigPageReqDto;
import com.ideal.dto.config.res.ConfigRspDto;
import com.ideal.dto.config.res.FileConfigPageRsqDto;
import com.ideal.model.Config;

import java.util.List;

/**
 * 配置Service接口
 *
 * @author songfz
 * @date 2022-07-13
 */
public interface IConfigService
{
    /**
     * 查询配置
     *
     * @param id 配置主键
     * @return 配置
     */
    public Config selectConfigById(Long id);

    /**
     * 查询配置列表
     *
     * @param config 配置
     * @return 配置集合
     */
    public List<Config> selectConfigList(Config config);

    /**
     * 新增配置
     *
     * @param config 配置
     * @return 结果
     */
    public int insertConfig(Config config);

    /**
     * 修改配置
     *
     * @param config 配置
     * @return 结果
     */
    public int updateConfig(Config config);

    /**
     * 批量删除配置
     *
     * @param ids 需要删除的配置主键集合
     * @return 结果
     */
    public int deleteConfigByIds(Long[] ids);

    /**
     * 删除配置信息
     *
     * @param id 配置主键
     * @return 结果
     */
    public int deleteConfigById(Long id);

    /**
     * 配置分页条件查询
     * @param pageReqDto
     * @return
     */
    List<FileConfigPageRsqDto> findByPageParams(FileConfigPageReqDto pageReqDto);


    ConfigRspDto findDetailByVersion(String version);

    ConfigRspDto findBaseByConfigId(Long id);

    Config selectByConfigDto(FileConfigDto configDto);

    Integer existEnNameAndRule(String fileEnName, String ruleGroup);
}
